home *** CD-ROM | disk | FTP | other *** search
-
- #include "parsehtm.h"
- #include "array.h"
- #include <stdio.h>
-
- Dictionary userData;
- String selectName;
- int allowMultiple = 0;
-
- void optionHandler(String ts,String as,String et,Dictionary td)
- {
- String value = 0;
- String data = 0;
- int foundOne = 0;
-
- data = dict_valueForKey(userData,selectName->string);
- value = dict_valueForKey(td,"VALUE");
-
- if(data && value && !strcmp(data->string,value->string))
- {
- value = dict_valueForKey(td,"SELECTED");
-
- if(value)
- {
- string_setStringValue(value,"SELECTED");
- }
- else
- {
- value = string_alloc(8);
- string_setStringValue(value,"SELECTED");
- dict_setValueForKey(td,value->string,value);
- }
- }
- else if(value && allowMultiple)
- {
- String newName = 0;
- Array arrayData = 0;
-
- newName = string_alloc(16);
-
- string_setStringValue(newName,"A_");
- string_appendString(newName, selectName->string);
-
- arrayData = dict_valueForKey(userData, newName->string);
-
- if(arrayData)
- {
- int i,max;
-
- max = array_count(arrayData);
-
- for(i=0;i<max;i++)
- {
- data = (String) array_itemAt(arrayData,i);
-
- if(data && data->string && !strcmp(data->string,value->string))
- {
- value = dict_valueForKey(td,"SELECTED");
-
- if(value)
- {
- string_setStringValue(value,"SELECTED");
- }
- else
- {
- value = string_alloc(8);
- string_setStringValue(value,"SELECTED");
- dict_setValueForKey(td,value->string,value);
- }
- foundOne = 1;
- }
- }
-
- if(!foundOne)
- {
- value = dict_orphanValueForKey(td,"SELECTED");
-
- if(value)
- {
- string_free(value);
- }
- }
- }
-
- string_free(newName);
- }
- else
- {
- value = dict_orphanValueForKey(td,"SELECTED");
-
- if(value)
- {
- string_free(value);
- }
- }
-
- value = stringForTagDict(td);
-
- if(value)
- {
- string_setStringValue(ts,value->string);
-
- string_free(value);
- }
- }
-
- void selectHandler(String ts,String as,String et,Dictionary td)
- {
- String value = 0;
-
- value = dict_valueForKey(td,"MULTIPLE");
-
- if(value)
- {
- allowMultiple = 1;
- }
- else
- {
- allowMultiple = 0;
- }
-
- value = dict_valueForKey(td,"NAME");
-
- if(value)
- {
- string_setStringValue(selectName,value->string);
- }
- else
- {
- string_empty(selectName);
- }
-
- value = stringForTagDict(td);
-
- if(value)
- {
- string_setStringValue(ts,value->string);
-
- string_free(value);
- }
- }
-
-
- void main(int argc, char *argv[])
- {
- String output;
- String value;
- Array valueArray;
-
- userData = dict_alloc();
- selectName = string_alloc(16);
-
- initializeHtmlParsingLibrary();
-
- dict_setValueForKey(handlerDict,"SELECT",selectHandler);
- dict_setValueForKey(handlerDict,"OPTION",optionHandler);
-
- value = string_alloc(8);
- string_setStringValue(value,"Stephen");
- dict_setValueForKey(userData,"name",value);
-
- valueArray = array_alloc(2);
-
- value = string_alloc(4);
- string_setStringValue(value,"AMEX");
- array_addItem(valueArray,value);
-
- value = string_alloc(4);
- string_setStringValue(value,"Visa");
- array_addItem(valueArray,value);
-
- dict_setValueForKey(userData,"A_card",valueArray);
-
- output = parseHtml("sel_c.htm");
-
- if(output && output->string)
- {
- printf("Content-type: text/html\n\n");
- fwrite(output->string,sizeof(char),strlen(output->string),stdout);
- printf("\n");
-
- string_free(output);
- }
-
- exit(0);
- }
-
-